package org.igeek.config.di.ch01;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Scope;

/**
 * @package org.igeek.config.di.ch01
 * @Description TODO
 * @Author LittlePunk [296526219@qq.ccom]
 * @Version 2022.1
 * @Date 2023/11/14 10:28
 *
 * 基于注解配置Bean
 *@Component: 基本注解, 标识了一个受 Spring 管理的组件
 * @Repository: 标识持久层dao层组件
 * @Service: 标识服务层(业务层)组件
 * @Controller: 标识表现层组件
 */
/*
* 基于 注解配置bean的属性
*   @value: 配置属性值   配置的式基本数据类型
*   @Autowired:  自动装配  配置的是实例对象
*       1.自动装配  默认通过数据类型 在ioc容器中查找匹配的实例bean，并且注入
*       2.若找不到匹配的实例，则抛出异常NoSuchBeanDefinitionException
*       3.@Autowired(required=false) 则代表不一定要提供匹配的实例，但是不存在则直接给属性赋值位null，可能出现空指针异常
* */

/*
* @ComponentScan注解
*   basePackages属性：就是默认的value
*   1.指定基本扫描包，可以指定多个，用数组来表示
*   2.扫描指定包下的注解：注解主要位上面四种
* */
@ComponentScan({"org.igeek.config.di.ch01"})
public class MyConfig {

    @Bean
    //@scope() 定义作用域  默认是单例
    @Scope("prototype")
    public User u(){
    return new User("李思思","123");
}
}
